import os
import json
from dataclasses import dataclass


@dataclass
class Config:
    # 视频处理参数
    frame_drop_rate: float = 0.08  # 帧丢弃率
    # rotation_range: float = 0.2  # 旋转角度范围（从2.0减小到0.5度）
    rotation_range: float = 2  # 旋转角度范围（从2.0减小到0.5度）
    scale_range: tuple = (0.97, 1.03)  # 缩放范围（从0.97-1.03减小到0.99-1.01）
    brightness_range: tuple = (1.1, 1.3)  # 亮度调整范围（从0.95-1.05减小到0.98-1.02）
    saturation_range: tuple = (1.1, 1.3)  # 饱和度调整范围（从0.9-1.1减小到0.95-1.05）

    # 音频处理参数
    pitch_factor_range: tuple = (1.1, 1.5)  # 音高调整范围
    speed_factor_range: tuple = (1.0, 1.0)  # 速度调整范围
    noise_intensity: float = 0.05  # 噪声强度

    # 新增音频处理参数
    sample_rate: int = 48000  # 音频采样率
    mask_width_ms: float = 100  # 音频掩码宽度（毫秒）
    mask_interval_s: float = 2.0  # 音频掩码间隔（秒）
    mask_intensity_range: tuple = (0.7, 0.9)  # 音频掩码强度范围
    lowpass_cutoff_range: tuple = (12000, 15000)  # 低通滤波器截止频率范围（Hz）
    lowpass_order: int = 2  # 低通滤波器阶数

    # 系统配置
    temp_dir: str = "temp"  # 临时文件目录
    log_file: str = "logs/process.log"  # 日志文件路径
    ffmpeg_path: str = "ffmpeg"  # FFmpeg路径

    def save(self, path: str = "config.json"):
        with open(path, "w") as f:
            json.dump(self.__dict__, f, indent=4)

    @classmethod
    def load(cls, path: str = "config.json"):
        if os.path.exists(path):
            with open(path, "r") as f:
                data = json.load(f)
            return cls(**data)
        return cls()


# 全局配置实例
config = Config.load()
